---@meta

---@enum D4.enum.ActorType
ActorType = {
	Invalid = 0x0,
	Monster = 0x1,
	Gizmo = 0x2,
	Client_Effect = 0x3,
	Server_Prop = 0x4,
	Environment = 0x5,
	Critter = 0x6,
	Player = 0x7,
	Item = 0x8,
	Axe_Symbol = 0x9,
	Projectile = 0xA,
	Custom_Brain = 0xB,
	Foliage = 0xC,
	Minimap_Secret = 0xD,
	Mount = 0xE,
	ACTORTYPE_COUNT = 0xF,
}

AttributeID =
	"Level" |            --等级
	"Strength" |         --力量
	"Intelligence" |     --智力
	"Wisdom" |           --意力
	"Agility" |          --敏捷
	"isInvincible" |     --是否无敌
	"CurrentHP" |        --当前血量
	"MaxHP" |            --最大血量
	"CurrentMP" |        --当前法力
	"MaxMP" |            --最大法力
	"ExtraMP" |          --额外法力
	"ItemQuality" |      --物品品质
	"ItemLevel" |        --装备品阶
	"RequireLevel" |     --需要等级
	"BaseItemPower" |    --装备基强度
	"TotalItemPower" |   --装备总强度
	"EquipPower" |       --角色装备强度
	"EquipArmor" |       --角色装备护甲
	"TotalArmor" |       --角色总护甲
	"CurrentHealthPotion" | --当前血瓶
	"MaxHealthPotion" |  --最大血瓶
	"SkillPanel" |       --技能面板
	"isStealth"          --是否隐身


---对象指针
---@alias Actor integer

---对象数据指针
---@alias ActorData integer

---技能ID
---@alias SkillID integer

---互动ID64
---@alias InteractID64 integer

---互动ID32
---@alias InteractID32 integer

---@class Game
---@field AttributeID string
Game = {}

---获取对象指针数组
---@return Actor[]
function Game.GetActorList() end

---获取技能ID数组
---@return SkillID[]
function Game.GetSkillList() end

---获取技能ID数组
---@return SkillID[]
function Game.GetSkillSlotList() end

---获取对象子类型
---@param Actor Actor
---@return integer
function Game.GetActorChildType(Actor) end

---获取对象交互32ID
---@param Actor Actor
---@return InteractID32
function Game.GetActorInteractID32(Actor) end

---获取对象交互64ID
---@param Actor Actor
---@return InteractID64
function Game.GetActorInteractID64(Actor) end

---获取对象的归属对象ID
---@param Actor Actor
---@return integer
function Game.GetActorBeLongActorID(Actor) end

---获取对象的库存位置
---@param Actor Actor
---@return integer
function Game.GetActorInventoryEmplacement(Actor) end

---获取对象当前血量
---@param Actor Actor 对象指针
---@return number
function Game.GetActorHP(Actor) end

---获取对象最大血量
---@param Actor Actor 对象指针
---@return number
function Game.GetActorMaxHP(Actor) end

---获取对象属性数据
---@param Actor Actor 对象指针
---@param AttributeID integer 属性ID
---@return integer
function Game.GetActorAttributeData(Actor, AttributeID) end

-------------------------------------------------------------------------

---获取对象数据指针
---@param Actor Actor
---@return ActorData
function Game.GetActorData(Actor) end

---获取对象数据类型
---@param ActorData ActorData
---@return integer
function Game.GetActorDataType(ActorData) end

---获取对象数据子类型
---@param ActorData ActorData
---@return integer
function Game.GetActorDataChildType(ActorData) end

---获取物体类型
---@param ActorData ActorData
---@return integer
function Game.GetGizmoType(ActorData) end

-------------------------------------------------------------------------

---获取对象坐标
---@param Actor Actor
---@return Vector3
function Game.GetActorLocation(Actor) end

---获取坐标点之间的距离
---@param A Vector3
---@param B Vector3
---@return number
function Game.GetDistance(A, B) end

---世界坐标转屏幕坐标
---@param Loc Vector3 世界坐标
---@param Pos Vector2 屏幕坐标
---@return boolean
function Game.WorldToScreen(Loc, Pos) end

---获取本地玩家对象指针
---@return integer
function Game.GetLocalPlayer() end

---获取本地坐骑对象指针
---@return integer
function Game.GetLocalMount() end

---获取本地对象ID
---@return integer
function Game.GetLocalActorID() end

---获取本地坐骑ID
---@return integer
function Game.GetLocalMountID() end

---点击键盘按键
---@param key integer 键代码
---@return number
function Game.KeyClick(key) end

---获取按键状态
---@param key integer 键代码
---@return integer
function Game.GetKeyState(key) end

---获取按键状态
---@param key integer 键代码
---@return integer
function Game.GetKeyState(key) end

---使用技能
---@param Skill integer 技能ID
---@param Target integer 目标对象ID
---@param Location Vector3 目标对象坐标
---@param Animation boolean 播放施法动画
function Game.UseSkill(Skill, Target, Location, Animation) end

---获取技能交互ID
---@param SkillID integer 技能ID
---@return integer
function Game.GetSkillLevel(SkillID) end

---获取技能状态
---@param SkillID integer 技能ID
---@return integer
function Game.GetSkillState(SkillID) end

---获取技能名称
---@param SkillID integer 技能ID
---@return string
function Game.GetSkillName(SkillID) end

---获取鼠标位置
---@return Vector3
function Game.GetMouseLocation() end

---移动到指定坐标
---@param Location Vector3
function Game.MoveToLocation(Location) end

---互动
---@param TargetId integer 目标ID
---@return string
function Game.Interaction(TargetId) end

---获取Item对象名称
---@param Actor Actor
---@return string
function Game.GetItemName(Actor) end

---获取当前职业名称
---@return string
function Game.GetRoleName() end

---判断是否在游戏中
---@return boolean
function Game.IsInGame() end